package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import org.hibernate.annotations.ForeignKey;


@Entity
@Table(schema="SISTEMAS", name = "SIS_MAE_USUARIO")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1468272685417583889L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_SIS_MAE_USUARIO")
	@SequenceGenerator(name = "SEQ_SIS_MAE_USUARIO", sequenceName = "SISTEMAS.SEQ_SIS_MAE_USUARIO", allocationSize = 0)
	@Column(name = "COD_ID_USUARIO")
	private Integer idUsuario;
	
	@Column(name = "TXT_USUARIO")
	private String usuario; // UserName con el que se loguea

	@Column(name = "TXT_CONTRASENIA")
	private String contrasenia;

	@Column(name = "TXT_NOMBRES", length = 50)
	private String nombres;

	@Column(name = "TXT_APELLIDOS", length = 100)
	private String apellidos;
	
	@Column(name = "TXT_CORREO", length = 50)
	private String correo;

	@ManyToOne
	@JoinColumn(name = "COD_ID_PAIS")
	@ForeignKey(name = "SIS_MAE_USUARIO_FK01")
	private Pais pais;
	
	@ManyToMany
	@JoinTable(schema="SISTEMAS", name="SIS_MAE_PERFIL_USUARIO", joinColumns=
			@JoinColumn(name="COD_ID_USUARIO", referencedColumnName="COD_ID_USUARIO"),
			inverseJoinColumns=@JoinColumn(name="COD_ID_PERFIL", referencedColumnName="COD_ID_PERFIL"))
	private List<Perfil> listaPerfiles;
	
	/*** Constructor ***/
	
	public Usuario() {
		
	}
	
	public Usuario(String nombres, String apellidos) {
		this.nombres = nombres;
		this.apellidos = apellidos;
	}

	/*** Getters and Setters ***/

	public Integer getIdUsuario() {
		return idUsuario;
	}
	
	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getContrasenia() {
		return contrasenia;
	}

	public void setContrasenia(String contrasenia) {
		this.contrasenia = contrasenia;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getApellidos() {
		return apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}



	public String getCorreo() {
		return correo;
	}

	public void setCorreo(String correo) {
		this.correo = correo;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public List<Perfil> getListaPerfiles() {
		return listaPerfiles;
	}

	public void setListaPerfiles(List<Perfil> listaPerfiles) {
		this.listaPerfiles = listaPerfiles;
	}
	
}